//
//  LayoutOfCollectionView.m
//  212--Homework  QQy音乐  阿里星球
//
//  Created by li cheng on 16/8/15.
//  Copyright © 2016年 冀永金. All rights reserved.
//

#import "LayoutOfCollectionView.h"

@interface LayoutOfCollectionView()
@property (nonatomic, strong) NSMutableArray<UICollectionViewLayoutAttributes *> *attirbutesArray;
@property (nonatomic, assign) CGFloat itemWidth;
@property (nonatomic, assign) CGFloat contentWidth;
// cell间 间距
@property (nonatomic, assign) CGFloat cellMargin;
@end
@implementation LayoutOfCollectionView
- (instancetype)init{
    self = [super init];
    if (self) {
        _attirbutesArray = [NSMutableArray array];
        _numebrOfColumns = 4;
        _contentWidth = 0.0f;
        _cellMargin = 5.0f;
    }
    return self;
}
- (CGFloat)itemWidth{
    CGFloat allWidthMargin = (_numebrOfColumns - 1) * _cellMargin;
    CGFloat noMarginWidth = CGRectGetWidth(self.collectionView.bounds) - allWidthMargin;
    return noMarginWidth / _numebrOfColumns;
}
// 自定义Layout, 必须重写三个方法
// 计算每个item的大小
#pragma mark - 准备布局
- (void)prepareLayout{
    [super prepareLayout];
    // 清空内容高度
    self.contentWidth = 0.0f;
    // 清空layoutAttributes数组
    if (_attirbutesArray.count != 0) {
        [_attirbutesArray removeAllObjects];
    }
    // 高度最小
    NSInteger column = 0;
    // 遍历collection中0区的所有item
    for (int i = 0; i < [self.collectionView numberOfItemsInSection:0]; i++) {
//        NSIndexPath *index = [NSIndexPath indexPathForItem:i inSection:0];
        // 创建系统需要的布局描述类
        UICollectionViewLayoutAttributes *layoutAttributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
        // 最小列的起始位置
        CGFloat x = column * self.itemWidth + _cellMargin;
        // 高度数组中,最小列对应的高度
        CGFloat y = 0;
        // 根据列数, 计算出宽度
        CGFloat width = self.itemWidth - _cellMargin;
    
        CGFloat height = self.collectionView.bounds.size.height;
        
        layoutAttributes.frame = CGRectMake(x, y, width, height);
        [_attirbutesArray addObject:layoutAttributes];
    }
}
// 返回的是,每个item对应的布局属性
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    [super layoutAttributesForElementsInRect:rect];
    return _attirbutesArray;
}
// 负责CollectionView的滚动范围
- (CGSize)collectionViewContentSize{
    [super collectionViewContentSize];
    return CGSizeMake(0, self.contentWidth);
}

@end

